package com.zenith.storage.service;

import com.zenith.storage.po.dto.ChunkCompleteDTO;
import com.zenith.storage.po.dto.ChunkInitDTO;
import com.zenith.storage.po.dto.ChunkUploadDTO;
import com.zenith.storage.po.vo.ChunkInitVO;
import com.zenith.storage.po.vo.ChunkStatusVO;
import com.zenith.storage.po.vo.ChunkUploadVO;
import com.zenith.storage.po.vo.FileVO;

/**
 * 分片上传服务接口
 */
public interface ChunkUploadService {
    /**
     * 初始化分片上传
     * @param chunkInitDTO 分片上传初始化信息
     * @return 分片上传初始化结果
     */
    ChunkInitVO initChunkUpload(ChunkInitDTO chunkInitDTO);

    /**
     * 上传分片
     * @param chunkUploadDTO 分片上传信息
     * @return 分片上传结果
     */
    ChunkUploadVO uploadChunk(ChunkUploadDTO chunkUploadDTO);

    /**
     * 完成分片上传
     * @param chunkCompleteDTO 分片上传完成信息
     * @return 文件信息
     */
    FileVO completeChunkUpload(ChunkCompleteDTO chunkCompleteDTO);

    /**
     * 获取分片上传状态
     * @param uploadKey 上传唯一标识
     * @return 分片上传状态
     */
    ChunkStatusVO getChunkStatus(String uploadKey);
}